#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define  BUF_SIZE 30

int main(int argc, char *argv[])
{
	int   fds[2];                               // 管道的两个文件描述符, 出口 + 入口
	char  str[] = "Who are you?";
	char  buf[BUF_SIZE];
	pid_t pid;
	
	int status = pipe(fds);
    if (status == -1) {
        exit(-1);
    }


	pid = fork();
	if(pid == 0)
	{
		write(fds[1], str, sizeof(str));
	}
	else
	{
		read(fds[0], buf, BUF_SIZE);
        // int puts (const char *str);  用于将一个字符串文本输出到stdout
		puts(buf);

        // 相应地, 也存在从标准输入读取的的函数 char *gets(char *str);
        // 它会从标准输入中读取字符，直到遇到换行符为止（包括换行符），然后将读取到的字符存储到 str 所指向的字符串中，并在末尾添加空字符'\0'。
        //! 需要注意的是，gets() 函数不会检查输入的字符数量，因此可能会导致缓冲区溢出, 建议使用 fgets() 函数来替代

        // 1. int   puts(const char *str, FILE *stream);
        // 2. char *fgets(char *str, int n, FILE *stream); 
	}
	return 0;
}